/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package control;

/*import BancoDados.BancoDeDados;
import Modelo.Consulta;
import POO.TecladoUtils;*/
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import model.beans.Consulta;
import model.persistence.GerenciadorEntidades;

/**
 *
 * @author kelyane
 */
public class GerenciadorConsulta {
    public static void cadastrarConsulta(Consulta consulta){     
        EntityManager em = GerenciadorEntidades.getEntityManager();
        em.getTransaction().begin();
        em.persist(consulta);
        em.getTransaction().commit();
    }
    
  /*  public static Consulta obtemConsulta() throws IOException, ParseException{
        System.out.printf("CPF Paciente\n");
        String cpf = TecladoUtils.lerString();
        
        System.out.printf("Data e hora da consulta\n (dd/mm/aaaa hh:mm)");
        String horario = TecladoUtils.lerString();
        
        Date date = new SimpleDateFormat("dd/MM/yyyy HH:mm", Locale.ROOT).parse(horario);
        
        Consulta consulta = buscarConsulta(cpf, date);
        
        if(consulta == null){
            System.out.printf("Consulta não existe.\n");                        
        }
        
        return consulta;
        
    }*/

    public static Consulta buscarConsulta(String numCPF, Date horario){
        EntityManager em = GerenciadorEntidades.getEntityManager();
        
        Query query = em.createNamedQuery("findAllConsulta");
        query.setParameter(numCPF, em);   
        
        List<Consulta> consultasNamedQuery = query.getResultList();
        
        for (int i = 0; i < consultasNamedQuery.size(); i++) {
            System.out.println("Medico: " + consultasNamedQuery.get(i).getMedico()
                    + " Horario: " + consultasNamedQuery.get(i).getHorario()
                    + " Paciente: " + consultasNamedQuery.get(i).getPaciente().getNome());
        }
           
       
        return  null;
    }
    
    public static void alterarConsulta(Consulta consulta){
        EntityManager em = GerenciadorEntidades.getEntityManager();
        em.getTransaction().begin();
        em.merge(em.getReference(Consulta.class, consulta.getID()));        
        em.getTransaction().commit();
    }
    
    public static Consulta buscarConsulta(Long id){
        EntityManager em = GerenciadorEntidades.getEntityManager();
        
        Query query = em.createNamedQuery("findConsultaId");
        query.setParameter("ID", id);   
        
        Consulta consulta = (Consulta) query.getSingleResult();
        
        return  consulta;
    }
    
    public static void removeConsulta(Consulta consulta){
        EntityManager em = GerenciadorEntidades.getEntityManager();
        em.getTransaction().begin();
        em.remove(em.getReference(Consulta.class, consulta.getID()));
        em.getTransaction().commit();
    }
            
}
